package com.dd.controller;

import com.dd.model.ProvinceAQIStatistics;
import com.dd.service.ProvinceStatisticService; // 我们稍后会创建这个服务类
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

import java.util.List;
/*`OtherDataStaticsController` 是 JavaFX 应用中的一个控制器类，主要用于“其他统计数据”页面的数据展示和交互。它的主要功能包括：

1. **初始化表格**：在 `initialize()` 方法中，将“其他统计数据”的各个字段（项目、数值）绑定到 TableView 的对应列上。
2. **加载数据**：通过 `OtherDataStaticsService` 获取“其他统计数据”，并将其显示在表格中。
3. **关闭窗口**：提供 `handleClose()` 方法，允许用户关闭当前统计窗口。

---

**总结**：  
这个类就是“其他统计数据页面”的控制器，负责把各项统计数据加载并展示在表格里，并提供关闭窗口的功能。*/
public class ProvinceStatisticsController {

    @FXML
    private TableView<ProvinceAQIStatistics> statisticsTable;
    @FXML
    private TableColumn<ProvinceAQIStatistics, Integer> provinceIdCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, String> provinceShortNameCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, String> provinceNameCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, Integer> so2ExceedCountCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, Integer> coExceedCountCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, Integer> pm25ExceedCountCol;
    @FXML
    private TableColumn<ProvinceAQIStatistics, Integer> aqiExceedCountCol;

    private ProvinceStatisticService statisticService; 
    private ObservableList<ProvinceAQIStatistics> masterStatisticsData;

    public ProvinceStatisticsController() {
        statisticService = new ProvinceStatisticService(); // 初始化服务
    }

    @FXML
    public void initialize() {
        // 绑定 TableColumn 到 ProvinceAQIStatistics 模型的属性
        provinceIdCol.setCellValueFactory(new PropertyValueFactory<>("provinceId"));
        provinceShortNameCol.setCellValueFactory(new PropertyValueFactory<>("provinceShortName"));
        provinceNameCol.setCellValueFactory(new PropertyValueFactory<>("provinceName"));
        so2ExceedCountCol.setCellValueFactory(new PropertyValueFactory<>("so2ExceedCount"));
        coExceedCountCol.setCellValueFactory(new PropertyValueFactory<>("coExceedCount"));
        pm25ExceedCountCol.setCellValueFactory(new PropertyValueFactory<>("pm25ExceedCount"));
        aqiExceedCountCol.setCellValueFactory(new PropertyValueFactory<>("aqiExceedCount"));

        // 初始加载数据
        loadStatisticsData();
    }

    private void loadStatisticsData() {
        List<ProvinceAQIStatistics> data = statisticService.getProvinceAQIStatistics();
        masterStatisticsData = FXCollections.observableArrayList(data);
        statisticsTable.setItems(masterStatisticsData);
    }

    @FXML
    private void handleBackToMain() {
        try {
            javafx.scene.Parent mainRoot = javafx.fxml.FXMLLoader.load(getClass().getResource("/com/dd/main.fxml"));
            Stage stage = (Stage) statisticsTable.getScene().getWindow();
            stage.setScene(new javafx.scene.Scene(mainRoot));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
